/**using 1~9
*/
int inc(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;
}
int dec(const void*a,const void*b)
{
    return *(int*)b-*(int*)a;
}
int sq(int n)
{
    int c=sqrt(n)+0.5;
    return c*c==n;
}
int main()
{
    int a,b,c;
    int x,y,z;
    int A[10];
    for(a=10;a*a<=999;a++)
       for(b=a+1;b*b<=999;b++)
         for(c=b+1;c*c<=999;c++)
        {
        x=a*a,y=b*b,z=c*c;
        A[1]=x/100,A[2]=(x%100)/10,A[3]=x%10;
        A[4]=y/100,A[5]=(y%100)/10,A[6]=y%10;
        A[7]=z/100,A[8]=(z%100)/10,A[9]=z%10;
        qsort(A+1,9,sizeof(A[0]),inc);
        int flag=1,i;
        for(i=1;i<=9;i++)
            if(A[i]!=i)
            {
                flag=0;
                break;
            }
        if(flag)
        {
            printf("%d %d %d\n",x,y,z);
        }
    }
}
